////////////////////////////////////////////////////////////////////////////////

#ifndef _MATHFUNCTIONS_H_
#define _MATHFUNCTIONS_H_

////////////////////////////////////////////////////////////////////////////////

#ifndef _SHAPE_H_
#include "shape.h"
#endif

////////////////////////////////////////////////////////////////////////////////


/** Physical engine namespace */
namespace PE
{
////////////////////////////////////////////////////////////////////////////////
// Mathematical functions
////////////////////////////////////////////////////////////////////////////////


/** Calculates length of the vector */
double VectorLength( const Vector& _v );


/** Calculates cosine of the angel between two vectors */
double Cos2Vectors( const Vector& _v1, const Vector& _v2 );


/** Calculates distance between two points */
double Distance( const Point& _p1, const Point& _p2 );


/** Calculates vector's direction */
Direction GetDirection( const Vector& _v );


/** Check is circle intersects segment, calculates tangency point */
bool IntersectCircleWithLine( const Point& _circlePt, const Circle& _circle, const Line& _line, PE::Point& _tangency );


////////////////////////////////////////////////////////////////////////////////

};

////////////////////////////////////////////////////////////////////////////////

#endif

////////////////////////////////////////////////////////////////////////////////
